/**
 * StateMachineButton.java
 * Copyright (C) 2009 Jose Mauro da Silva Sandy
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 *  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

package utils;

import java.io.File;
import java.io.IOException;
import javax.swing.JButton;
import java.util.ArrayList;
import javax.swing.ImageIcon;
/**
 *
 * @author jmsandy
 */
public class StateMachineButton {

    //<editor-fold defaultstate="collapsed" desc="Constants">
    public static final int INICIAL   = 0;
    public static final int PROCURAR  = 1;
    public static final int RECUPERAR = 2;
    public static final int NOVO      = 3;
    public static final int SALVAR    = 4;
    public static final int EDITAR    = 5;
    public static final int CANCELAR  = 6;
    public static final int EXCLUIR   = 7;
    //</editor-fold>

    /**
     * Atualiza o status de uma lista de botoes de acordo com o status corrente.
     * Deve ser passado uma lista de botoes na seguinte estrutura:
     * 1o: Procurar ou Recuperar
     * 2o: Novo ou Salvar
     * 3o: Editar ou Cancelar
     * 4o: Excluir
     * @param lstButton - lista de botoes que tera seu estado modificado
     * @param state - estado atual do botao
     */
    public static void changeState(ArrayList<JButton> lstButton, int state)
                                                        throws IOException{

        String path = 
               ApplicationPath.getApplicationPath() + "images" + File.separator;
        switch(state){
            // <editor-fold defaultstate="collapsed" desc="ESTADO INICIAL - 0">
            case StateMachineButton.INICIAL:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setText("Procurar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "find.png"));

                button = new JButton();
                button = lstButton.get(1);
                button.setText("Novo"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "new.png"));

                button = new JButton();
                button = lstButton.get(2);
                button.setText("Cancelar"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "cancel.png"));

                button = new JButton();
                button = lstButton.get(3);
                button.setText("Excluir"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "delete.png"));
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO PROCURAR - 1">
            case StateMachineButton.PROCURAR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setText("Recuperar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "search.png"));

                button = new JButton();
                button = lstButton.get(1);
                button.setText("Novo"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "new.png"));

                button = new JButton();
                button = lstButton.get(2);
                button.setText("Cancelar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "cancel.png"));

                button = new JButton();
                button = lstButton.get(3);
                button.setText("Excluir"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "delete.png"));
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO RECUPERAR - 2">
            case StateMachineButton.RECUPERAR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setText("Procurar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "find.png"));

                button = new JButton();
                button = lstButton.get(1);
                button.setText("Novo"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "new.png"));

                button = new JButton();
                button = lstButton.get(2);
                button.setText("Editar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "edit.png"));

                button = new JButton();
                button = lstButton.get(3);
                button.setText("Excluir"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "delete.png"));
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO NOVO - 3">
            case StateMachineButton.NOVO:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setText("Procurar"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "find.png"));

                button = new JButton();
                button = lstButton.get(1);
                button.setText("Salvar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "save.png"));

                button = new JButton();
                button = lstButton.get(2);
                button.setText("Cancelar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "cancel.png"));

                button = new JButton();
                button = lstButton.get(3);
                button.setText("Excluir"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "delete.png"));
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO SALVAR - 4">
            case StateMachineButton.SALVAR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setText("Procurar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "find.png"));

                button = new JButton();
                button = lstButton.get(1);
                button.setText("Novo"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "new.png"));

                button = new JButton();
                button = lstButton.get(2);
                button.setText("Editar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "edit.png"));

                button = new JButton();
                button = lstButton.get(3);
                button.setText("Excluir"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "delete.png"));
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO EDITAR - 5">
            case StateMachineButton.EDITAR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setText("Procurar"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "find.png"));

                button = new JButton();
                button = lstButton.get(1);
                button.setText("Salvar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "save.png"));

                button = new JButton();
                button = lstButton.get(2);
                button.setText("Cancelar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "cancel.png"));

                button = new JButton();
                button = lstButton.get(3);
                button.setText("Excluir"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "delete.png"));
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO CANCELAR - 6">
            case StateMachineButton.CANCELAR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setText("Procurar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "find.png"));

                button = new JButton();
                button = lstButton.get(1);
                button.setText("Novo"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "new.png"));

                button = new JButton();
                button = lstButton.get(2);
                button.setText("Editar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "edit.png"));

                button = new JButton();
                button = lstButton.get(3);
                button.setText("Excluir"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "delete.png"));
                break;
            }
            //</editor-fold>
            // <editor-fold defaultstate="collapsed" desc="ESTADO EXCLUIR - 7">
            case StateMachineButton.EXCLUIR:{
                JButton button = new JButton();
                button = lstButton.get(0);
                button.setText("Procurar"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "find.png"));

                button = new JButton();
                button = lstButton.get(1);
                button.setText("Novo"); button.setEnabled(true);
                button.setIcon(new ImageIcon(path + "new.png"));

                button = new JButton();
                button = lstButton.get(2);
                button.setText("Cancelar"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "cancel.png"));

                button = new JButton();
                button = lstButton.get(3);
                button.setText("Excluir"); button.setEnabled(false);
                button.setIcon(new ImageIcon(path + "delete.png"));
                break;
            }
            //</editor-fold>
        }
    }
}
